//package cn.tqfeiyang.smartadmin.commons.application;
//
//import cn.dev33.satoken.dao.SaTokenDaoDefaultImpl;
//import jakarta.annotation.PostConstruct;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.context.ApplicationListener;
//import org.springframework.context.event.ContextClosedEvent;
//import org.springframework.stereotype.Component;
//
//import java.io.*;
//import java.nio.file.Path;
//import java.util.Map;
//
///**
// * SaToken将token持久化到本地
// *
// * @author tqfeiyang
// * @since 2024/8/24 10:07
// */
//@Slf4j
//@Component
//public class LocalFileSaTokenDao extends SaTokenDaoDefaultImpl implements ApplicationListener<ContextClosedEvent> {
//
//    static final String DATA_FILE_PATH = "build/sa-token-data.txt";
//    static final String EXPIRE_FILE_PATH = "build/sa-token-expire.txt";
//
//    @PostConstruct
//    public void initData() {
//        try {
//            File dataFile = new File(DATA_FILE_PATH);
//            if (dataFile.exists()) {
//                FileInputStream fis = new FileInputStream(dataFile);
//                ObjectInputStream ois = new ObjectInputStream(fis);
//                Map<String, Object> map = (Map<String, Object>) ois.readObject();
//                dataMap.putAll(map);
//                ois.close();
//                fis.close();
//            }
//
//            File expireFile = new File(EXPIRE_FILE_PATH);
//            if (expireFile.exists()) {
//                FileInputStream fis = new FileInputStream(expireFile);
//                ObjectInputStream ois = new ObjectInputStream(fis);
//                Map<String, Long> map = (Map<String, Long>) ois.readObject();
//                expireMap.putAll(map);
//                ois.close();
//                fis.close();
//            }
//        } catch (Exception e) {
//            log.error(e.getMessage(), e);
//        }
//    }
//
//    @Override
//    public void onApplicationEvent(ContextClosedEvent event) {
//        try {
//            {
//                File dataFile = new File(DATA_FILE_PATH);
//                FileOutputStream fos = new FileOutputStream(dataFile);
//                ObjectOutputStream oos = new ObjectOutputStream(fos);
//                oos.writeObject(dataMap);
//                oos.close();
//                fos.close();
//            }
//
//            {
//                File expireFile = new File(EXPIRE_FILE_PATH);
//                FileOutputStream fos = new FileOutputStream(expireFile);
//                ObjectOutputStream oos = new ObjectOutputStream(fos);
//                oos.writeObject(expireMap);
//                oos.close();
//                fos.close();
//            }
//        } catch (Exception e) {
//            log.error(e.getMessage(), e);
//        }
//    }
//}
